package ui.activity.systemManagement;

import java.util.List;

import ui.activity.ActivityOfAF4Ad;
import ui.viewModel.ModelErrorInfo;
import ui.viewModel.ViewModel;
import ui.viewModel.systemManagement.RegisterViewModel;

import com.mysport.ui.R;

import domain.businessEntity.systemManagement.User;
import domain.businessService.systemManagement.ISystemManagementService;
import domain.businessService.systemManagement.SystemManagementService;

import android.os.Bundle;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class RegisterActivity extends ActivityOfAF4Ad {

	// 声明界面中出现的并且跟用户有交互的控件变量
	private EditText rg_userName;// register（简称rg_）用户名
	private EditText rg_passWord;// 密码
	private EditText rg_checkedPassWord;// 确认密码

	private EditText rg_weight;// 体重
	private EditText rg_sex;// 性别
	private EditText rg_height;// 身高

	private Button rg_button;// 确定
	private Button rg_return;// 返回
	private RegisterViewModel rvm;// 声明一个视图模型

	// 声明了一个服务对象，以便于调用服务提供的方法
	private ISystemManagementService registerService;

	// 枚举类型，声明了登录后可能出现结果的表示字符串
	public enum RegisterResult {
		UserAlreadyExit, // 用户已经存在
		PassWordDiffer, // 两次输入的密码不同
		RegisterSuccess;// 注册成功
	}

	// 定义了一个服务对象loginService
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_register);
		registerService = new SystemManagementService();
		rvm = new RegisterViewModel();
	}

	// 自动产生，不要动
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_register, menu);
		return true;
	}

	// 初始化控件变量，并为相应控件注册事件
	@Override
	protected void initControlsAndRegEvent() {
		// TODO Auto-generated method stub
		// 获取相应控件的ID号
		rg_userName = (EditText) findViewById(R.id.rg_userName);
		rg_passWord = (EditText) findViewById(R.id.rg_passWord);
		rg_checkedPassWord = (EditText) findViewById(R.id.rg_checkedPassWord);
		rg_button = (Button) findViewById(R.id.rg_button);
		rg_return = (Button) findViewById(R.id.rg_return);
		//rg_height = (EditText) findViewById(R.id.rg_height);
		//rg_weight = (EditText) findViewById(R.id.rg_weight);
		//rg_sex = (EditText) findViewById(R.id.rg_sex);

		// 返回按钮事件的响应
		rg_return.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent intent = new Intent(RegisterActivity.this,
						LoginActivity.class);
				startActivity(intent);
			}
		});

		// 注册按钮事件响应
		rg_button.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub

				// 参数为（user）
				// String UserName=rg_userName.getText().toString();
				// String PassWord=rg_passWord.getText().toString();
				// String checkedword=rg_checkedPassWord.getText().toString();
				// if(!PassWord.equals(checkedword)){
				// Toast.makeText(getApplication(), "两次输入的密码不用",
				// Toast.LENGTH_LONG).show();
				// }else{
				// User user=new User();
				// user.setUsername(UserName);
				// user.setPassWord(PassWord);
				// if(registerService.register(user)){
				// Toast.makeText(getApplication(), "注册成功",
				// Toast.LENGTH_LONG).show();
				// Intent intent = new
				// Intent(RegisterActivity.this,LoginActivity.class);
				// startActivity(intent);
				// }else{
				// Toast.makeText(getApplication(), "用户已存在",
				// Toast.LENGTH_LONG).show();
				// }
				// }

				// 参数为（userName,passWord）
				RegisterResult rresult = doRegister();
				if (rresult == RegisterResult.UserAlreadyExit) {
					Toast.makeText(getApplication(), "用户已经存在",
							Toast.LENGTH_LONG).show();
				} else {
					if (rresult == RegisterResult.PassWordDiffer) {
						Toast.makeText(getApplication(), "两次输入的密码不同",
								Toast.LENGTH_LONG).show();
					} else {
						Toast.makeText(getApplication(), "注册成功",
								Toast.LENGTH_LONG).show();
						Intent intent = new Intent(RegisterActivity.this,
								LoginActivity.class);
						startActivity(intent);
					}
				}
			}
		});
	}

	
	// 参数为（userName,passWord）
	// 中间辅助函数，针对用户各种输入信息产生回馈消息
	public RegisterResult doRegister() {
		// 将数据注入到视图模型
		rvm.setUserName(rg_userName.getText().toString());
		rvm.setPassWord(rg_passWord.getText().toString());
		rvm.setCheckedPassWord(rg_checkedPassWord.getText().toString());

		// 从视图模型中取数据
		String UserName = rvm.getUserName();
		String PassWord = rvm.getPassWord();
		String CheckedPassWord = rvm.getCheckedPassWord();
		RegisterResult rresult = null;
		// 两次密码不同
		if (!PassWord.equals(CheckedPassWord)) {
			rresult = RegisterResult.PassWordDiffer;
		} else {// 注册成功
			if (registerService.register(UserName, PassWord)) {
				rresult = RegisterResult.RegisterSuccess;
			} else {// 用户已经存在
				rresult = RegisterResult.UserAlreadyExit;
			}
		}
		return rresult;
	}

	// 初始化ViewModel
	@Override
	protected ViewModel initModel() {
		// TODO Auto-generated method stub
		return null;
	}

	// 更新视图View
	@Override
	protected void upDateView(ViewModel aVM) {
		// TODO Auto-generated method stub
		
	}

	// 处理视图模型ViewModel中出现的错误
	@Override
	protected void processViewModelErrorMsg(List<ModelErrorInfo> errsOfVM,
			String errMsg) {
		// TODO Auto-generated method stub

	}

}
